home *** CD-ROM | disk | FTP | other *** search
/ ASME's Mechanical Engine…ing Toolkit 1997 December / ASME's Mechanical Engineering Toolkit 1997 December.iso / intel / pas-8087.lzh / M8087.MAC next >
Text File  |  1987-01-27  |  7KB  |  640 lines

  1. ;*****************************************************************************
  2. ;  BYTE MAGAZINE  AUGUST 1983  PAGE 331
  3. ;*****************************************************************************
  4. ;        ************  M8087.MAC  ************
  5. ;*****************************************************************************
  6. ;    FILE OF 8087 MACROS FOR ASSEMBLY LANGUAGE SUPPORT
  7. ;*****************************************************************************
  8.  
  9. ;**********************   PAGE 334   **************************
  10.  
  11. if1
  12.  
  13. ESC_REG    MACRO    PARAM,REG
  14.     IFE REG
  15.     ESC PARAM,AX
  16.     ELSE
  17.         REG = REG - 1
  18.         IFE REG
  19.         ESC PARAM,CX
  20.         ELSE
  21.             REG = REG - 1
  22.             IFE REG
  23.             ESC PARAM,DX
  24.             ELSE
  25.                 REG = REG - 1
  26.                 IFE REG
  27.                 ESC PARAM,BX
  28.                 ELSE
  29.                     REG = REG - 1
  30.                     IFE REG
  31.                     ESC PARAM,SP
  32.                     ELSE
  33.                         REG = REG - 1
  34.                         IFE REG
  35.                         ESC PARAM,BP
  36.                         ELSE
  37.                             REG = REG - 1
  38.                             IFE REG
  39.                             ESC PARAM,SI
  40.                             ELSE
  41.                                 ESC PARAM,DI 
  42.                             ENDIF
  43.                         ENDIF
  44.                     ENDIF
  45.                 ENDIF
  46.             ENDIF
  47.         ENDIF
  48.     ENDIF
  49. ENDM
  50.  
  51. CHECK_ST MACRO P_ST
  52.     REG = -1
  53.     IFIDN <&P_ST>,<ST(0)>
  54.         REG = 0
  55.     ENDIF
  56.     IFIDN <&P_ST>,<ST(1)>
  57.         REG = 1
  58.     ENDIF
  59.     IFIDN <&P_ST>,<ST(2>
  60.         REG = 2
  61.     ENDIF
  62.     IFIDN <&P_ST>,<ST(3)>
  63.         REG = 3    
  64.     ENDIF
  65.     IFIDN <&P_ST>,<ST(4)>
  66.         REG = 4
  67.     ENDIF
  68.     IFIDN <&P_ST>,<ST(5)>
  69.         REG = 5
  70.     ENDIF
  71.     IFIDN <&P_ST>,<ST(6)>
  72.         REG = 6
  73.     ENDIF
  74.     IFIDN <&P_ST>,<ST(7)>
  75.         REG = 7
  76.     ENDIF
  77.     IFIDN <&P_ST>,<st(0)>
  78.         REG = 0
  79.     ENDIF
  80.     IFIDN <&P_ST>,<st(1)>
  81.         REG = 1
  82.     ENDIF
  83.     IFIDN <&P_ST>,<st(2)>
  84.         REG = 2
  85.     ENDIF
  86.     IFIDN <&P_ST>,<st(3)>
  87.         REG = 3
  88.     ENDIF
  89.     IFIDN <&P_ST>,<st(4)>
  90.         REG = 4
  91.     ENDIF
  92.     IFIDN <&P_ST>,<st(5)>
  93.         REG = 5
  94.     ENDIF
  95.     IFIDN <&P_ST>,<st(6)>
  96.         REG = 6
  97.     ENDIF
  98.     IFIDN <&P_ST>,<st(7)>
  99.         REG = 7
  100.     ENDIF
  101.  
  102.     IFIDN <&P_ST>,<ST(i)>
  103.         REG = 0
  104.     ENDIF
  105.     IFIDN <&P_ST>,<ST(I)>
  106.         REG = 0
  107.  
  108. ;******************     PAGE 339    ********************
  109.     ENDIF
  110.     IFIDN <&P_ST>,<st(i)>
  111.         REG = 0
  112.     ENDIF
  113.     IFIDN <&P_ST>,<st(I)>
  114.         REG = 0
  115.     ENDIF
  116. ENDM
  117.  
  118. CHK_CONC MACRO
  119.     IF AUTOSYNC
  120.         WAIT
  121.     ENDIF
  122. ENDM
  123.  
  124. CHOOSE_4 MACRO P1,P2,XXX1,XXX2,XXX3,XXX4
  125.     ZERO = 0
  126.     NOTZERO = 0
  127.     REG = 0
  128.     IFB <P1>
  129.         REG = 1
  130.         ESC_REG XXX1,REG
  131.     ELSE
  132.     IFIDN <P1>,<ST>
  133.         CHECK_ST P2
  134.         ZERO = REG + 1
  135.         IFE ZERO
  136.             REG = 1
  137.         ENDIF
  138.         ESC_REG XXX2,REG
  139.     ELSE
  140.     IFIDN <P1>,<st>
  141.         CHECK_ST P2
  142.         ZERO = REG + 1
  143.         IFE ZERO
  144.             REG = 1
  145.         ENDIF
  146.         ESC_REG XXX2,REG
  147.     ELSE
  148.         CHECK_ST P1
  149.         NOTZERO = REG + 1
  150.         IF NOTZERO
  151.         ESC_REG XXX1,REG
  152.     ELSE
  153.     IFIDN <P1>,<SHORT>
  154.         ESC XXX3,P2
  155.         CHK_CONC
  156.     ELSE
  157.     IFIDN <P1>,<short>
  158.         ESC XXX3,P2
  159.         CHK_CONC
  160.     ELSE    
  161.     IFIDN <P1>,<LONG>
  162.         ESC XXX4,P2
  163.         CHK_CONC
  164.     ELSE
  165.     IFIDN <P1>,<long>
  166.         ESC XXX4,P2
  167.         CHK_CONC
  168.     ELSE
  169.  
  170. ;*******************    PAGE  340  ************************
  171.  
  172.     IFIDN <P1>,<TEMP>
  173.         ESC XXX2,P2
  174.         CHK_CONC
  175.     ELSE    
  176.     IFIDN <P1>,<temp>
  177.         ESC XXX2,P2
  178.         CHK_CONC
  179.     ELSE
  180.         REG = 1
  181.         ESC XXX2,REG
  182.     ENDIF
  183.     ENDIF
  184.     ENDIF
  185.     ENDIF
  186.     ENDIF
  187.     ENDIF
  188.     ENDIF
  189.     ENDIF
  190.     ENDIF
  191.     ENDIF    
  192. ENDM
  193.  
  194. INT_SIZE MACRO P1,P2,XXX_S,XXX_W,XXX_L
  195.  
  196.     IFIDN <P1>,<WORD>
  197.         ESC XXX_W,P2
  198.     ELSE
  199.     IFIDN <P1>,<word>
  200.         ESC XXX_W,P2
  201.     ELSE
  202.     IFIDN <P1>,<SHORT>
  203.         ESC XXX_S,P2
  204.     ELSE
  205.     IFIDN <P1>,<short>
  206.         ESC XXX_S,P2
  207.     ELSE
  208.     IFIDN <P1>,<LONG>
  209.         ESC XXX_L,P2
  210.     ELSE
  211.     IFIDN <P1>,<long>
  212.         ESC XXX_L,P2
  213.     ELSE
  214.     ERROR IN macro !!!
  215.     ENDIF
  216.     ENDIF
  217.     ENDIF
  218.     ENDIF
  219.     ENDIF
  220.     ENDIF
  221.     CHK_CONC
  222. ENDM
  223.  
  224. FABS    MACRO
  225.     WAIT
  226.     ESC 0CH,CX
  227. ENDM
  228.  
  229. FADD    MACRO    P1,P2
  230.     IFB <P1>
  231.         FADDP ST(1),ST
  232.     ELSE
  233.         WAIT
  234.         CHOOSE_4 P1,P2,20H,00H,00H,20H
  235.     ENDIF
  236. ENDM
  237.  
  238. FADDP    MACRO    P1,P2
  239.     WAIT
  240.     CHOOSE_4 P1,,30H
  241. ENDM
  242.  
  243. FBLD    MACRO    P1
  244.     WAIT
  245.     ESC 3CH,P1
  246. ENDM
  247.  
  248. FBSTP    MACRO    P1
  249.     WAIT
  250.     ESC 3EH,P1
  251. ENDM
  252.  
  253. FCHS    MACRO
  254.     WAIT
  255.     ESC 0CH,AX
  256.  
  257. ;**************************  PAGE 342  ************************
  258.  
  259. ENDM
  260.  
  261. FCLEX    MACRO
  262.     WAIT
  263.     FNCLEX
  264. ENDM
  265.  
  266. FCOM    MACRO    P1,P2
  267.     WAIT
  268.     CHOOSE_4 P1,P2,02H,,02H,22H
  269. ENDM
  270.  
  271. FCOMP    MACRO    P1,P2
  272.     WAIT
  273.     CHOOSE_4 P1,P2,03H,,03H,23H
  274. ENDM
  275.  
  276. FCOMPP    MACRO    
  277.     WAIT
  278.     ESC 33H,CX
  279. ENDM
  280.  
  281. FDECSTP    MACRO
  282.     WAIT
  283.     ESC 0EH,SI
  284. ENDM
  285.  
  286. FDISI    MACRO
  287.     WAIT
  288.     FNDISI
  289. ENDM
  290.  
  291. FDIV    MACRO    P1,P2
  292.     IFB <P1>
  293.         FDIVP ST(1),ST
  294.     ELSE
  295.         WAIT
  296.         CHOOSE_4 P1,P2,26H,06H,06H,26H
  297.     ENDIF
  298. ENDM
  299.  
  300. FDIVP    MACRO    P1,P2
  301.     WAIT
  302.     CHOOSE_4 P1,,36H
  303. ENDM
  304.  
  305. FDIVR    MACRO    P1,P2
  306.     IFB <P1>
  307.         FDIVRP ST(1),ST
  308.     ELSE
  309.         WAIT
  310.         CHOOSE_4 P1,P2,27H,07H,07H,27H
  311.     ENDIF
  312. ENDM
  313.  
  314. FDIVRP    MACRO    P1,P2
  315.     WAIT
  316.     CHOOSE_4 P1,,37H
  317. ENDM
  318.  
  319. FENI    MACRO
  320.     WAIT
  321.     FNENI
  322. ENDM
  323.  
  324. FFREE    MACRO    P1
  325.     WAIT
  326.     CHOOSE_4 P1,,28H
  327. ENDM
  328.  
  329. FIADD    MACRO    P1,P2
  330.     WAIT
  331.     INT_SIZE P1,P2,10H,30H
  332. ENDM
  333.  
  334. FICOM    MACRO    P1,P2
  335.     WAIT
  336.     INT_SIZE P1,P2,12H,32H
  337. ENDM
  338.  
  339. FICOMP    MACRO    P1,P2
  340.     WAIT
  341.     INT_SIZE P1,P2,13H,33H
  342. ENDM
  343.  
  344. FIDIV    MACRO    P1,P2
  345.     WAIT
  346.     INT_SIZE P1,P2,16H,36H
  347. ENDM
  348.  
  349. FIDIVR    MACRO    P1,P2
  350.     WAIT
  351.     INT_SIZE P1,P2,17H,37H
  352. ENDM
  353.  
  354. FILD    MACRO    P1,P2
  355.     WAIT
  356.     INT_SIZE P1,P2,18H,38H,3DH
  357. ENDM
  358.  
  359. FIMUL    MACRO    P1,P2
  360.     WAIT
  361.     INT_SIZE P1,P2,11H,31H
  362. ENDM
  363.  
  364. FINCSTP    MACRO
  365.     WAIT
  366.     ESC 0EH,DI
  367. ENDM
  368.  
  369. FINIT    MACRO
  370.     WAIT
  371.     FNINIT
  372. ENDM
  373.  
  374. FIST    MACRO    P1,P2
  375.     WAIT
  376.     INT_SIZE P1,P2,1AH,3AH
  377. ENDM
  378.  
  379. FISTP    MACRO    P1,P2
  380.     WAIT
  381.  
  382. ;********************   PAGE 347  **************************
  383.  
  384.     INT_SIZE P1,P2,1BH,3BH,3FH
  385. ENDM
  386.  
  387. FISUB    MACRO    P1,P2
  388.     WAIT
  389.     INT_SIZE P1,P2,14H,34H
  390. ENDM
  391.  
  392. FISUBR    MACRO    P1,P2
  393.     WAIT
  394.     INT_SIZE P1,P2,15H,35H
  395. ENDM
  396.  
  397. FLD    MACRO    P1,P2
  398.     WAIT
  399.     CHOOSE_4 P1,P2,08H,1DH,08H,28H
  400. ENDM
  401.  
  402. FLDCW    MACRO    P1
  403.     WAIT
  404.     ESC 0DH,P1
  405. ENDM
  406.  
  407. FLDENV    MACRO    P1
  408.     WAIT
  409.     ESC 0CH,P1
  410. ENDM
  411.  
  412. FLDLG2    MACRO
  413.     WAIT
  414.     ESC 0DH,SP
  415. ENDM
  416.  
  417. FLDLN2    MACRO
  418.     WAIT
  419.     ESC 0DH,BP
  420. ENDM
  421.  
  422. FLDL2E     MACRO
  423.     WAIT
  424.     ESC 0DH,DX
  425. ENDM
  426.  
  427. FLDL2T    MACRO
  428.     WAIT
  429.     ESC 0DH,CX
  430. ENDM
  431.  
  432. FLDPI    MACRO
  433.     WAIT
  434.     ESC 0DH,BX
  435. ENDM
  436.  
  437. FLDZ    MACRO
  438.     WAIT
  439.     ESC 0DH,SI
  440. ENDM
  441.  
  442. FLD1    MACRO
  443.     WAIT
  444.     ESC 0DH,AX
  445. ENDM
  446.     
  447. FMUL    MACRO    P1,P2
  448.     IFB <P1>
  449.         FMULP ST(1),ST
  450.     ELSE
  451.         WAIT
  452.         CHOOSE_4 P1,P2,21H,01H,01H,21H
  453.     ENDIF
  454. ENDM
  455.  
  456. FMULP    MACRO    P1,P2
  457.     WAIT
  458.     CHOOSE_4 P1,,31H
  459. ENDM
  460.  
  461. FNCLEX    MACRO
  462.     ESC 1CH,DX
  463. ENDM
  464.  
  465. FNDISI    MACRO
  466.     ESC 1CH,CX
  467. ENDM
  468.  
  469. FNENI    MACRO
  470.     ESC 1CH,AX
  471. ENDM
  472.  
  473. FNINIT    MACRO
  474.     ESC 1CH,BX
  475. ENDM
  476.  
  477. FNOP    MACRO
  478.     WAIT
  479.     ESC 0AH,AX
  480. ENDM
  481.  
  482. FNSAVE    MACRO    P1
  483.     ESC 2EH,P1
  484. ENDM
  485.  
  486. FNSTCW    MACRO    P1
  487.     ESC 0FH,P1
  488. ENDM
  489.  
  490. FNSTENV    MACRO    P1
  491.     ESC 0EH,P1
  492. ENDM
  493.  
  494. FNSTSW    MACRO    P1
  495.     ESC 2FH,P1
  496. ENDM
  497.  
  498. FPATAN    MACRO
  499.     WAIT
  500.     ESC 0EH,BX
  501. ENDM
  502.  
  503. FPREM    MACRO
  504.     WAIT
  505.     ESC 0FH,AX
  506. ENDM
  507.  
  508. ;**********************  PAGE 348  *********************
  509.  
  510. FPTAN    MACRO
  511.     WAIT
  512.     ESC 0EH,DX
  513. ENDM
  514.  
  515. FRNDINT    MACRO
  516.     WAIT
  517.     ESC 0FH,SP
  518. ENDM
  519.  
  520. FRSTOR    MACRO P1    
  521.     WAIT
  522.     ESC 2CH,P1
  523. ENDM
  524.  
  525. FSAVE    MACRO    P1
  526.     WAIT
  527.     FNSAVE P1
  528. ENDM
  529.  
  530. FSCALE    MACRO
  531.     WAIT
  532.     ESC 0FH,BP
  533. ENDM
  534.  
  535. FSQRT MACRO
  536.     WAIT
  537.     ESC 0FH,DX
  538. ENDM
  539.  
  540. FST    MACRO    P1,P2
  541.     WAIT
  542.     CHOOSE_4 P1,P2,2AH,,0AH,2AH
  543. ENDM
  544.  
  545. FSTCW     MACRO    P1
  546.     WAIT
  547.     FNSTCW P1
  548. ENDM
  549.  
  550. FSTENV    MACRO    P1
  551.     WAIT
  552.     FNSTENV P1
  553. ENDM
  554.  
  555. FSTP    MACRO    P1,P2
  556.     WAIT
  557.     CHOOSE_4 P1,P2,2BH,1FH,0BH,2BH
  558. ENDM
  559.  
  560. FSTSW    MACRO    P1
  561.     WAIT
  562.     FNSTSW P1
  563. ENDM
  564.  
  565. FSUB    MACRO    P1,P2
  566.     IFB <P1>
  567.         FSUBP ST(1),ST
  568.     ELSE
  569.         WAIT
  570.         CHOOSE_4 P1,P2,24H,04H,04H,24H
  571.     ENDIF
  572. ENDM
  573.  
  574. FSUBP    MACRO    P1,P2
  575.     WAIT
  576.     CHOOSE_4 P1,,34H
  577. ENDM
  578.  
  579. FSUBR    MACRO    P1,P2
  580.     IFB <P1>
  581.         FSUBRP ST(1),ST
  582.     ELSE
  583.         WAIT
  584.         CHOOSE_4 P1,P2,25H,05H,05H,25H
  585.     ENDIF
  586. ENDM
  587.  
  588. FSUBRP    MACRO    P1,P2
  589.     WAIT
  590.     CHOOSE_4 P1,,35H
  591. ENDM
  592.  
  593. FTST    MACRO
  594.     WAIT
  595.     ESC 0CH,SP
  596. ENDM
  597.  
  598. FWAIT    MACRO
  599.     WAIT
  600. ENDM
  601.  
  602. FXAM    MACRO
  603.     WAIT
  604.     ESC 0CH,BP
  605. ENDM
  606.  
  607. FXCH    MACRO    P1
  608.     WAIT
  609.     CHOOSE_4 P1,,09H
  610. ENDM
  611.  
  612. FXTRACT    MACRO
  613.     WAIT
  614.     ESC 0EH,SP
  615. ENDM
  616.  
  617. FYL2X    MACRO
  618.     WAIT
  619.     ESC 0EH,CX
  620. ENDM
  621.  
  622. FYL2XP1    MACRO
  623.     WAIT
  624.     ESC 0FH,CX
  625. ENDM
  626.  
  627. F2XM1    MACRO
  628.     WAIT
  629.     ESC 0EH,AX
  630. ENDM
  631.  
  632. ENDIF
  633.  
  634. AUTOSYNC = 1
  635.  
  636. ;***************************************************************************
  637. ;        ************  END OF 8087 MACROS  **************    
  638. ;***************************************************************************
  639.     ***********  END OF 8087 MACROS  **************    
  640. ;*********************************************************************